package MultiThread.SequentialControl;

import java.util.concurrent.locks.LockSupport;

/**
 * @author Jimmy Zhan WORKSTATION
 * @since 2023/8/4 22:32
 * 说明：
 *       控制线程执行顺序  ——  park + unpark
 *       调用 LockSupport.park()线程阻塞
 *       调用 LockSupport.unpark()线程恢复
 *       这个 unpark()就好比是一次性的通行证，线程被unpark了就可以获得一张通行证
 *       等到下次被要求停泊(park)的时候把通行证交出去，或者在park的时候用于解除阻塞状态
 */

public class ParkUnpark {
    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            LockSupport.park();
            System.out.println("1");
        }, "t1");

        Thread t2 = new Thread(() -> {
            LockSupport.unpark(t1);
            System.out.println("1");
        }, "t2");

        t1.start();
        t2.start();
    }
}
